// pages/myPage/myPage.js
/*
  1. 根据用户信息返回 用户加入的团队 和 用户管理的团队
  2. 根据返回的默认团队ID 在 加入团队 和 管理团队 中 找出默认团队及其默认地图ID
  3. 根据默认地图ID返回图层数据，后续操作不变
  3. 根据默认团队返回地图列表
*/
/*
  思路最终版
  1.发送ajax请求之前, 检查用户是否登录, 没有登陆则跳转登录页面
  2.登录之后，获取用户Id, 获取用户管理的团队和加入的团队信息，找出当前用户默认的团队ID，团队下的默认地图Id
  3.根据默认的团队ID发送请求获取团队下的地图数据，获取默认地图下的图层-点数据
  4.上述步骤需要存入全局数据的有manageTeamList、joinTeamList、defaultTeamId、mapGlobal、activeMapIdGlobal、layerGlobal
  5.每次到个人中心页面，需要重新获取默认团队下的地图数据、默认地图下的图层-点数据并更新到全局数据
  6.根据地图、图层、点数据更新界面统计数据


  领导

  1. 显示所有团队
  2. 没有默认团队ID和默认地图ID

  新用户
  1. 考虑没有默认团队ID和默认地图ID，团队列表和地图、图层列表全为空
*/
/*
  1. 图片上传接口
  2. 模糊查询，时间范围查询
  3. 首页数据整理
  4. 百度搜索页面
  5. 添加地图
*/
import {
  request
} from '../../request/index.js';
import {
  rightJudge
} from '../../lib/right.js';
var app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userinfo: {},
    // 地图数
    mapCount: 0,
    // 图层数
    layerCount: 0,
    // 标记数
    markerCount: 0,
    // 成员数
    memberCount: 0,
    flag: true
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      tmp: JSON.parse(JSON.stringify(app.globalData))
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: async function () {
    //if (app.globalData.teamListPageHideFlag == true ) 
    if (app.globalData.teamListPageHideFlag == true) {
      app.globalData.teamUserRight = rightJudge(app.globalData.defaultTeamId)
      console.log('当前用户所在团队权限:', app.globalData.teamUserRight)
      app.globalData.mapGlobal = ''
      app.globalData.layerGlobal = ''
      if (app.globalData.userInfo) {
        wx.showLoading({
          title: '加载中',
          mask: true
        });
        // 发起获取请求默认团队下的地图数据
        if (app.globalData.defaultTeamId) {
          let res2 = await request({
            url: '/map/getMapListByTeamId/' + app.globalData.defaultTeamId
          }, false)
          app.globalData.mapGlobal = res2.data.data
        }
        // 发起请求获取用户默认团队下的默认地图数据
        let res3 = await request({
          url: '/teamuser/getUserInfoById/' + app.globalData.userIdGlobal
        }, false)
        if (res3.data.data.manageTeamList) {
          res3.data.data.manageTeamList.map(v => {
            if (v.teamId == app.globalData.defaultTeamId) {
              app.globalData.activeMapIdGlobal = v.defaultMapId
            }
          })
        }
        if (res3.data.data.joinTeamList) {
          res3.data.data.joinTeamList.map(v => {
            if (v.teamId == app.globalData.defaultTeamId) {
              app.globalData.activeMapIdGlobal = v.defaultMapId
            }
          })
        }
        // 发起请求获得 地图-图层-点数据(给地图ID)
        if (!app.globalData.activeMapIdGlobal) {
          app.globalData.activeMapIdGlobal = ''
        }
        if (app.globalData.activeMapIdGlobal) {
          let resLayer = await request({
            url: '/marker/testZty/' + app.globalData.activeMapIdGlobal,
          }, false)
          app.globalData.layerGlobal = resLayer.data.data
        }
        // 获取点数据
        let userSetting = await request({
          url: '/setting/getSettingById/' + app.globalData.userIdGlobal
        }, false)
        if (app.globalData.layerGlobal) {
          app.globalData.layerGlobal.forEach(v => {
            for (let setting of userSetting.data.data) {
              if (setting.layerId == v._id) {
                v.isVisible = setting.isVisible
              }
            }
          })
        }
        // 设置数据
        let layerCount = 0
        let markerCount = 0
        for (let map of app.globalData.mapGlobal) {
          let res = await request({
            url: '/marker/testZty/' + map._id
          }, false)
          layerCount += res.data.data.length
          res.data.data.map(v => {
            markerCount += v.markerList.length
          })
        }
        this.setData({
          mapCount: app.globalData.mapGlobal.length,
          layerCount: layerCount,
          markerCount: markerCount
        })
        wx.hideLoading();
      }
    }
    app.globalData.teamListPageHideFlag = false
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: async function () {
    // 重新统计数据
    // 设置数据
    let layerCount = 0
    let markerCount = 0
    wx.showLoading({
      title: '加载中',
      mask: true
    });
    for (let map of app.globalData.mapGlobal) {
      let res = await request({
        url: '/marker/testZty/' + map._id
      }, false)
      layerCount += res.data.data.length
      res.data.data.map(v => {
        markerCount += v.markerList.length
      })
    }
    this.setData({
      mapCount: app.globalData.mapGlobal.length,
      layerCount: layerCount,
      markerCount: markerCount
    })
    wx.hideLoading()
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  async handleGetUserInfo(e) {
    app.globalData.loginFlag = true
    if (!this.data.username) {
      wx.showModal({
        title: '提示',
        content: '请输入用户名！'
      })
    } else if (!this.data.password) {
      wx.showModal({
        title: '提示',
        content: '请输入密码！'
      })
    } else {
      // 输入之后
      let sendData = {}
      sendData['weixinName'] = this.data.username
      sendData['password'] = this.data.password
      let res = await request({
        url: '/auth/login',
        method: 'POST',
        data: sendData
      })
      if (res.data.status == 400) {
        let userChoice = await wx.showModal({
          title: '提示',
          content: res.data.message
        })
      } else if (res.data.data.userInfo.role == '管理员') {
        wx.showToast({
          title: '您是超级管理员\r\n请在PC端体验完整功能！',
          icon: 'none',
          duration: 3000,
          mask: true
        })
      } else {
        let userInfo = res.data.data.userInfo
        wx.showToast({
          title: '登陆成功！',
        })
        this.setData({
          userinfo: userInfo
        });
        app.globalData.userInfo = userInfo;
        app.globalData.userIdGlobal = userInfo._id
        wx.showLoading({
          title: '加载中',
          mask: true
        });
        // 获取用户管理的团队信息
        let p1 = await request({
          url: '/teamuser/getManageTeamList/' + app.globalData.userIdGlobal
        }, false)
        // 获取用户加入的团队信息
        let p2 = await request({
          url: '/teamuser/getJoinTeamList/' + app.globalData.userIdGlobal
        }, false)
        app.globalData.manageTeamList = p1.data.data
        app.globalData.joinTeamList = p2.data.data
        //app.globalData.defaultTeamId = p1.data.data[0].defaultTeamId
        app.globalData.defaultTeamId = res.data.data.userInfo.defaultTeamId
        // 权限
        console.log('当前团队为：', app.globalData.defaultTeamId)
        //console.log(rightJudge(app.globalData.defaultTeamId))
        app.globalData.teamUserRight = rightJudge(app.globalData.defaultTeamId)
        console.log('当前用户所在团队权限:', app.globalData.teamUserRight)
        // 判断是领导还是普通用户
        // 普通用户
        if (this.data.userinfo.role == '普通用户' || '领导') {
          // 有默认团队ID
          if (this.data.userinfo.defaultTeamId) {
            // 发起获取请求默认团队下的地图数据
            let res2 = await request({
              url: '/map/getMapListByTeamId/' + app.globalData.defaultTeamId
            }, false)
            app.globalData.mapGlobal = res2.data.data
          }
          // 找默认地图信息
          p1.data.data.map((v, i) => {
            if (v.defaultTeamId == v.manageTeamList.teamId) {
              app.globalData.activeMapIdGlobal = v.manageTeamList.defaultMapId
            }
          })
          p2.data.data.map((v, i) => {
            if (v.defaultTeamId == v.joinTeamList.teamId) {
              app.globalData.activeMapIdGlobal = v.joinTeamList.defaultMapId
            }
          })
          // 获取图层数据
          if (app.globalData.activeMapIdGlobal) {
            let resLayer = await request({
              url: '/marker/testZty/' + app.globalData.activeMapIdGlobal,
            }, false)
            app.globalData.layerGlobal = resLayer.data.data
          }
          // 获取点数据
          let userSetting = await request({
            url: '/setting/getSettingById/' + app.globalData.userIdGlobal
          }, false)
          if (app.globalData.layerGlobal) {
            app.globalData.layerGlobal.forEach(v => {
              for (let setting of userSetting.data.data) {
                if (setting.layerId == v._id) {
                  v.isVisible = setting.isVisible
                }
              }
            })
          }
          // 设置数据
          let layerCount = 0
          let markerCount = 0
          for (let map of app.globalData.mapGlobal) {
            let res = await request({
              url: '/marker/testZty/' + map._id
            }, false)
            layerCount += res.data.data.length
            res.data.data.map(v => {
              markerCount += v.markerList.length
            })
          }
          this.setData({
            mapCount: app.globalData.mapGlobal.length,
            layerCount: layerCount,
            markerCount: markerCount
          })
        }
        this.setData({
          flag: false
        })
        wx.hideLoading();
      }
    }
    app.globalData.loginFlag = false
  },
  handleTeamClick() {
    if (this.data.userinfo.role == '普通用户') {
      wx.navigateTo({
        url: '../teamListPage/teamListPage',
      })
    } else if (this.data.userinfo.role == '领导') {
      wx.navigateTo({
        url: '../teamListLeaderPage/teamListLeaderPage',
      })
    }
  },
  // 获取输入账号 
  usernameInput: function (e) {
    this.setData({
      username: e.detail.value
    })
  },

  // 获取输入密码 
  passwordInput: function (e) {
    this.setData({
      password: e.detail.value
    })
  },
  handleLogout(){
    // 重置全局数据
    app.globalData = this.data.tmp
    this.setData({
      flag: true,
      username: '',
      password: ''
    })
    this.setData({
      mapCount: 0,
      layerCount: 0,
      markerCount: 0
    })
    wx.showToast({
      title: '已退出登录',
      mask: true
    })
  }
})